home *** CD-ROM | disk | FTP | other *** search
/ SGI Developer Toolbox 6.1 / SGI Developer Toolbox 6.1 - Disc 4.iso / public / fax / src / relnotes / cFront next >
Text File  |  1994-08-01  |  20KB  |  967 lines

  1. .ds TI \*(FF 2.2 Release Notes
  2. .\".ds VE Document Version X.X
  3. .\".ds SE IRIS-4D Series
  4. .\"
  5. .\"     DO *NOT* EDIT THIS FILE below this line.  As of the 7.5x9 changes,
  6. .\"     there are "No user servicable parts inside."  Thank you :-)
  7. .\"
  8. .\" The xM register holds the "mode" for the current operation.  It may be
  9. .\" set on the command line, via "-rx<n>", where <n> is a number.  The modes
  10. .\" are as follows:
  11. .\"
  12. .\"    say:        to print:
  13. .\"
  14. .\"    -rx0        Chapters, the default.
  15. .\"    -rx1        Appendices.
  16. .\"    -rx2        Table of Contents, List of Tables, and List of Figures.
  17. .\"    -rx3        Index
  18. .\"
  19. .\" Other values are undefined.
  20. .\"
  21. .\" The mode is quickly copied into the xM register, since we use "x" for
  22. .\" various other purposes throughout the macros.
  23. .\"
  24. .nr xM 0\nx        \" The mode, passed from the command line.
  25. .
  26. .PH "''''"
  27. .PF "''''"
  28. .if !\n(.A \{.
  29. .fp 1 PA
  30. .fp 2 PI
  31. .fp 3 PB
  32. .fp 4 PX        \" was HO
  33. .fp 5 H
  34. .fp 6 HB
  35. .fp 7 C
  36. .fp 8 CB\}
  37. .hw trans-ceiver
  38. .hw work-station
  39. .ds u U\s-2NIX\s0
  40. .ds t \v`2p`\o@@@\v`-2p`
  41. .ds ^ \|\v`2p`^\v`-2p`\|
  42. .ds Lf List of Figures
  43. .ds Lt List of Tables
  44. .ds Lx List of Exhibits
  45. .ds Le List of Equations
  46. .nr L 11i        \" page length, plus 2 inches at the top
  47. .pl \nLu        \" set it now.
  48. .
  49. .PH "''''"        \" clear all headers
  50. .EH "''''"
  51. .OH "''''"
  52. .
  53. .nr xI 1.25i        \" paragraph offset
  54. .
  55. .nr O .75i        \" The real page offset, 
  56. .nr O +\n(xIu        \" plus the offset of the running text.
  57. .po \nOu        \" Set it now.
  58. .
  59. .nr xW 6i        \" The real line length.
  60. .nr W \n(xWu-\n(xIu    \" The effective line length, without the offset.
  61. .ev 0
  62. .ll \nWu        \" set ev 0 line length
  63. .lt \nWu        \" set ev 0 title length
  64. .ev            \" pop to previous environment
  65. .ev 1
  66. .ll \nWu        \" set ev 1 line length
  67. .lt \nWu        \" set ev 1 title length
  68. .ev            \" pop to previous environment
  69. .ev 2
  70. .ll \nWu        \" set ev 2 line length
  71. .lt \nWu        \" set ev 2 title length
  72. .ev            \" pop to previous environment
  73. .S 10 12
  74. .nr Of 0
  75. .nr Cl 3
  76. .ds TT 0 26p 62p 106p 106p+44p    \" ToC (and LoT, LoF) "tab stops"
  77. .rm )E            \" remove old method of ToC emmissions
  78. .nr De 0
  79. .nr Df 5
  80. .nr Ej 0
  81. .nr Li 3
  82. .nr Pi 3
  83. .nr Ps 2
  84. .nr Si 0
  85. .nr Hc 0
  86. .nr Hb 7
  87. .nr Hs 7
  88. .nr Hu 4
  89. .nr x |0i
  90. .
  91. .nr Tp 2.75i            \" Default top of page, for chaptes/appendices
  92. .\" if \n(xM=2 .nr Tp 232p        \" ToC, LoT, LoF
  93. .\" if \n(xM=3 .nr Tp 230p        \" Index
  94. .
  95. .nr N 5
  96. .
  97. .
  98. .    \" before changing the "last text line" and "footer position"
  99. .    \" traps, it is important to remove the existing traps.  There are
  100. .    \" two traps set at :m, and one at :r.
  101. .
  102. .wh -\n(:mu
  103. .wh -\n(:mu
  104. .wh -\n(:ru
  105. .
  106. .    \" Now it is safe to reset the last text baseline trap and the 
  107. .    \" footer trap registers, and then set the traps themselves:
  108. .
  109. .nr :m 1.25i    \" last text line trap (from bottom of page)
  110. .nr :r .625i    \" footer position trap (from bottom of page)
  111. .nr :r +1v    \" compensate for some -mm spacing
  112. .
  113. .nr :o \n(:mu    \" save "last permitted baseline" value in :o for later
  114. 'wh -\n(:mu )f    \" set the first trap
  115. 'ch )f 15i    \" move it for a sec...
  116. 'wh -\n(:mu )n     \" set the second trap,
  117. 'ch )f -\n(:mu    \" and move the first one back.
  118. 'wh -\n(:ru )b    \" set the footer trap.
  119. .nr :M \n(:mu    \" save the value in :M for later, also.
  120. .
  121. .\" Parameters for each level of heading:
  122. .
  123. .ie \n(xM=1 .HM A 1 1 1 1 1 1        \" heading mark style for appendices
  124. .el         .HM 1 1 1 1 1 1 1        \" heading mark style for chapters
  125. .
  126. .ds HF 6 6 6 6 6 6 6            \" font
  127. .ds HP 14 12 11 10 10 10 10        \" point size
  128. .ds HV 12 12 12 12 12 12 12        \" vertical spacing
  129. .ds HB 0 48p 38p 38p 38p 38p 38p    \" space before
  130. .ds HA 100p 28p 28p 28p 28p 28p 28p    \" space after
  131. .ds HN 1.25i 0 .625i 1.25i 1.25i 1.25i 1.25i        \" mark indent
  132. .ds HT 1.25i .625i 1.25i 1.25i 1.25i 1.25i 1.25i    \" text indent
  133. .ds HE 9i 2.75i 1.3125i 6v 6v 6v 6v    \" ``need'' amount to spring new pages
  134. .
  135. .nr xH 34p        \" vertical space from chapter number to chapter title
  136. .
  137. .de TP
  138. .rs
  139. .sp |\\n(Tpu
  140. .ns
  141. ..
  142. .de Ex
  143. .lg 0
  144. .ls 1
  145. .nf
  146. .sp
  147. .\".ie '\\$1'' .in +.25i
  148. .\".el .in +.0i
  149. .if !\n(.A .ft 7
  150. .ta 8m,+8m,+8m,+8m,+8m,+8m,+8m,+8m,+8m,+8m,+8m,+8m,+8m,+8m
  151. .\".nr xp \\n(.s    \" save current point size (from .s) in register .xp
  152. .ps 9    
  153. .\".nr xv \\n(.v    \" save current vertical space (from .v) in register .xv
  154. .vs 10
  155. ..
  156. .\" end display of program excerpts and commands
  157. .de Ee
  158. .if !\n(.A .ft 1
  159. .\" if arg given then don't space. Kludge in case at very bottom of page at
  160. .\" end of chapter.
  161. .\".ie '\\$1'' .in -.25i
  162. .\".el .in -.0i
  163. .fi
  164. .ls
  165. .lg 1
  166. .ps 10
  167. .vs 12
  168. .sp
  169. .ns
  170. .\".ps \\n(xp    \" restore point size from register .xp
  171. .\".vs \\n(xv    \" restore vertical space from register .xv
  172. ..
  173. .de Cf
  174. .lg 0
  175. .ls 1
  176. .nf
  177. .sp
  178. .in +.25i
  179. .if !\n(.A .ft 7
  180. .ta 4m,+4m,+4m,+4m,+4m,+4m,+4m,+4m,+4m,+4m,+4m,+4m,+4m,+4m
  181. .nr xp \\n(.s    \" save current point size (from .s) in register .xp
  182. .ps 9    
  183. .nr xv \\n(.v    \" save current vertical space (from .v) in register .xv
  184. .vs 10
  185. ..
  186. .de Ce
  187. .if !\n(.A .ft 1
  188. .in -.25i
  189. .\".sp
  190. .fi
  191. .ls
  192. .lg 1
  193. .ps \\n(xp    \" restore point size from register .xp
  194. .vs \\n(xv    \" restore vertical space from register .xv
  195. ..
  196. .de Cd
  197. .ie \\$2=1 .ds Na FORTRAN
  198. .el .ds Na C
  199. .nf
  200. .sp
  201. .nr xp \\n(.s
  202. .ps 9
  203. .ft 6
  204. \(bx \\*(Na Program: \\$1
  205. .ta 2m,+2m,+2m,+2m,+2m,+2m,+2m,+2m,+2m,+2m,+2m,+2m,+2m,+2m
  206. .ps 8
  207. .ft 7
  208. ..
  209. .de Cq
  210. .fi
  211. .ps \\n(xp
  212. .ft 1
  213. .\".sp
  214. ..
  215. .de BX
  216. \\$3\(br\|\f7\s10\\$1\s0\fP\|\(br\l'|0\(rn'\l'|0\(ul'\\$2
  217. ..
  218. .de I
  219. \\$3\f2\\$1\fP\\$2
  220. ..
  221. .de B
  222. \\$3\f3\\$1\fP\\$2
  223. ..
  224. .de T
  225. \\$3\f7\s-1\\$1\s0\fP\\$2
  226. ..
  227. .de bT
  228. \\$3\f8\s-1\\$1\s0\fP\\$2
  229. ..
  230. .de hb
  231. \\$3\f6\s-2\\$1\s0\fP\\$2
  232. ..
  233. .de HX
  234. .
  235. .\" The )I macro picks a single word out of a list, and puts it in string }3.
  236. .\" For example, ".)I 3 one two three four five" will set }3 to "three".  We
  237. .\" use this macro several times to pick the right word out of the strings
  238. .\" HV, HP, HF, etc. to set the dimensions for the headings at each level.
  239. .\" The number in \\$1 is the level, the rest of the arguments are taken from
  240. .\" one of the strings of dimensions (.e.g. HV).
  241. .
  242. .)I \\$1 \\*(HE            \" set }3 to "page eject" limit
  243. .ie 0\\*(}3\{.            \" if it is defined, and greater than 0,
  244. .    ne \\*(}3u        \" need that much.
  245. .\}
  246. .el \{.
  247. .    ne 6v
  248. .\}
  249. .
  250. .in 0                \" our numbers are relative to 0 indent
  251. .
  252. .        \" special handling for level 1 headings:
  253. .if \\$1=1 \{.
  254. .if !\\$3"" .ds SH \\$3
  255. .
  256. .if \\nP%2=0&\\n(H1>1 \{.    \" if new page is even, and chapter > 1...
  257. .    rs            \"    turn spacing back on,
  258. .    bp            \"    start another new page.
  259. .\}
  260. .nr P 1                \" reset page counter to 1.
  261. .\}                \" end of special handling for level 1
  262. .
  263. .if (\\$1<=\\n(Cl) \{.        \" if the level is righ, emit ToC info
  264. .    tm TC .xT \\n(;1 \\$1 "\\*(}0" "\\$3" \\nP \\n(H1
  265. .\}
  266. .                \" rebuild the mark, one piece at a time:
  267. .ds }0
  268. .)I \\$1 \\*(HN            \" set }3 to the "mark indent" value
  269. .as }0 \\h\\*(}3
  270. .
  271. .\" We must set point size and font so "width" function works right later:
  272. .)I \\$1 \\*(HP            \" set }3 to the point size for this level
  273. .ps \\*(}3
  274. .)I \\$1 \\*(HF            \" set }3 to the font for this level
  275. .ft \\*(}3
  276. .
  277. .                \" add the parts of the number to the mark,
  278. .if (\\n(Hu>0)&(\\$1<\\n(Hu)\{.    \" but keeping an eye on the "Hu" register.
  279. .    if \\$1>=2 .as }0 \\n(H1.\\n(H2
  280. .    if \\$1>=3 .as }0 .\\n(H3
  281. .    if \\$1>=4 .as }0 .\\n(H4
  282. .    if \\$1>=5 .as }0 .\\n(H5
  283. .    if \\$1>=6 .as }0 .\\n(H6
  284. .    if \\$1>=7 .as }0 .\\n(H7
  285. .\}
  286. .)I \\$1 \\*(HT            \" get "text indent" value, add to mark
  287. .nr x \\*(}3-\\w\\*(}0
  288. .as }0 \\h\\nxu
  289. ..
  290. .
  291. .de HY
  292. .po -1.25i            \" just before printing, push the offset left
  293. .)I \\$1 \\*(HB            \" set }3 to "space before" for this level
  294. .if !\\*(}3 \{.        \" if HB value is not empty...
  295. .
  296. .    \" Note that some spacing either has been done or will be done by
  297. .    \" the .H macro; it's either .5v or 1.5v, so we'll just compensate
  298. .    \" for those values here.
  299. .
  300. .    ie \\$1=1 \{\.            \" for chapter headings...
  301. .        nr x \\*(}3        \" target is HB,
  302. .        sp |\\n(Tpu+\\nxu    \" absolute position from top of page
  303. .    \}
  304. .    el \{\.                \" for other headings...
  305. .        nr x (\\*(}3)-1.5v    \" target is HB value minus 1.5v
  306. .        sp \\nxu        \" normal spacing from here.
  307. .    \}
  308. .\}
  309. .
  310. .            \" special case chapter prefix for level 1...
  311. .if \\$1=1 \{\
  312. .    ft 2
  313. .    ps 12
  314. .    )I \\$1 \\*(HN
  315. .    ie \\n(xM=1 \\h'\\*(}3'Appendix \\n(H1
  316. .    el          \\h'\\*(}3'Chapter \\n(H1
  317. .    sp \\n(xHu-1v
  318. .    ps
  319. .\}
  320. .
  321. ..
  322. .
  323. .de HZ
  324. .
  325. .    \" Note that some spacing either has been done or will be done
  326. .    \" by the .H macro; we compensate for it here, with -1.5v
  327. .
  328. .)I \\$1 \\*(HA            \" set }3 to "space after" for this level
  329. .nr x (\\*(}3)-1.5v        \" our value, minus spacing already done
  330. .if !\\*(}3 .sp \\nxu    \" if not empty, do the space after
  331. .                \" otherwise, there was no HA, so do nothing.
  332. .ns
  333. .po +1.25i            \" after printing, put the offset back
  334. .)R                \" restore normal indents, sizes, etc.
  335. .
  336. .if \\$1=1 \{.            \" special processing for chapter headings:
  337. .    nr :p
  338. .    SA 0
  339. .    ev 2
  340. .    lt \nWu
  341. .    PF "''''"
  342. .
  343. .    \" Because the footer strings get scanned four times (once now, while
  344. .    \" this macro is being defined, and then three more times as described
  345. .    \" in the manual), it is necessary to use eight backslashes to get just
  346. .    \" one in the right place at the right time.
  347. .
  348. .    \" Except, of course, the chapter title, which is in $3 right now, 
  349. .    \" so we must use it right now, with two backslashes.
  350. .
  351. .\".    EF "#\\\\\\\\f6\\\\\\\\n(H1-\\\\\\\\nP\\\\\\\\fP     \\&\\\\\\\\s9\\$3##\\\\\\\\*(SE\\\\\\\\s0#"
  352. .\".    OF "#\\\\\\\\s9\\\\\\\\*(VE\\\\\\\\s0##\\\\\\\\f6\\\\\\\\n(H1-\\\\\\\\nP\\\\\\\\fP#"
  353. .    EF "#\\\\\\\\f6\\\\\\\\n(H1-\\\\\\\\nP\\\\\\\\fP##\\\\\\\\s9\\$3\\\\\\\\s0#"
  354. .    OF "#\\\\\\\\s9\\\\\\\\*(TI\\\\\\\\s0##\\\\\\\\f6\\\\\\\\n(H1-\\\\\\\\nP\\\\\\\\fP#"
  355. .    ev
  356. .\}
  357. ..
  358. .de TB
  359. .sp 12p
  360. .nr !1 1
  361. .ps -1        
  362. .nr x \\n+(Tb
  363. .tm TB .xT -1 Table \\n(H1-\\nx "\\$1" \\nP \\n(H1
  364. .ie \\nN=5 .)F \f6Table 1 \\nx "\f1\\$1\f1" "\\n(H1-" 0\f1
  365. .el        .)F \f6Table 1 \\nx "\f1\\$1\f1" "\\$2" 0\\$3\f1
  366. .)R
  367. ..
  368. .de EC
  369. .nr !2 1
  370. .nr x \\n+(Ec
  371. .tm EC .xT -1 Equation \\n(H1-\\nx "\\$1" \\nP \\n(H1
  372. .ie \\nN=5 .)F \f6Equation 2 \\nx "\f5\\$1\f1" "\\n(H1-" 0
  373. .el .)F \f6Equation 2 \\nx "\f5\\$1\f1" "\\$2" 0\\$3
  374. ..
  375. .de EX
  376. .nr !3 1
  377. .nr x \\n+(Ex
  378. .tm EX .xT -1 Exhibit \\n(H1-\\nx "\\$1" \\nP \\n(H1
  379. .ie \\nN=5 .)F \f6Exhibit 3 \\nx "\f5\\$1\f1" "\\n(H1-" 0
  380. .el .)F \f6Exhibit 3 \\nx "\f5\\$1\f1" "\\$2" 0\\$3
  381. ..
  382. .de FG
  383. .sp 12p
  384. .nr !0 1
  385. .ps -1
  386. .nr x \\n+(Fg
  387. .tm FG .xT -1 Figure \\n(H1-\\nx "\\$1" \\nP \\n(H1
  388. .ie \\nN=5 .)F \f6Figure 0 \\nx "\f1\\$1\f1" "\\n(H1-" 0
  389. .el .)F \f6Figure 0 \\nx "\f1\\$1\f1" "\\$2" 0\\$3
  390. .)R
  391. ..
  392. .de KS
  393. .\" br
  394. .\" \".ev 1
  395. .\" nr ni \\n(.iu
  396. .\" in 0
  397. .\" ll \\nWu-\\n(xIu
  398. .\" fi
  399. .\" di XX
  400. .DS
  401. ..
  402. .de KE
  403. .\" br
  404. .\" di
  405. .\" if (\\n(dnu>=\\n(.t) .bp
  406. .\" nf
  407. .\" ll \\nWu
  408. .\" in \\n(niu
  409. .\" XX
  410. .\" )R            \" reset everything
  411. .\" \".ev
  412. .DE
  413. ..
  414. .de Ix
  415. .tm IX \\n(H1-\\nP \\$1
  416. ..
  417. .deFS
  418. 'nr:s +1 
  419. .if\\n(:F .)D "FS:missing FE"
  420. .if\\n(:F .FE
  421. .if\\n(:y .)D "FS:missing DE"
  422. .if\\n(:y .DE
  423. .nr:F 1
  424. .if!\\n(!F \{\
  425. .ie\\n(;C .nr !F 2
  426. .el.nr !F 1  \}
  427. .ie(\\n(;C>0)&((\\n(;b=1):((\\n(;j=1)&(\\n(!F=1))) \{\
  428. .nr!F 1
  429. .>W  \}
  430. .el.if ((\\n(;C=0)&(\\n(;j=1)&(\\n(!F=2))  .>N   
  431. 'ev1
  432. 'll \\nWu
  433. 'di>b
  434. .nr:D 1
  435. .)R
  436. 'nh
  437. 'if\\n(:i 'hy 14
  438. 'ad
  439. 'if\\n(:j 'na
  440. 'ps-2
  441. 'vs\\n(.sp+1p
  442. 'sp\\n(Fsu*3p
  443. 'if\\n(.$ 'ds }y \\$1\ 
  444. 'if!\\n(.$ 'ds }y \\*(]y.\ 
  445. 'if\\n(:k \\*(}y\&\c
  446. 'if!\\n(:k 'nr ;v \w\0\0.\ 
  447. 'if!\\n(:k 'nr ;u \w\\*(}y
  448. 'if!\\n(:k 'in +\\n(;vu
  449. 'if!\\n(:k 'if !\\n(:l 'ti -\\n(;vu
  450. 'if!\\n(:k 'if !\\n(:l 'if !\\n(;u-\\n(;v \\*(}y\h\\n(;vu-\\n(;uu\&\c
  451. 'if!\\n(:k 'if !\\n(:l 'if \\n(;u-\\n(;v \\*(}y\&\c
  452. 'if!\\n(:k 'if \\n(:l 'if \\n(;v-\\n(;u 'ti -\\n(;uu
  453. 'if!\\n(:k 'if \\n(:l 'if !\\n(;v-\\n(;u 'ti -\\n(;vu
  454. 'if!\\n(:k 'if \\n(:l \\*(}y\&\c
  455. ..
  456. .deFE
  457. .if!\\n(:F .)D "FE:no FS active"
  458. .br
  459. 'di
  460. .nr:D 0
  461. .if\\n(;c .nr :D \\n(;c
  462. 'in0
  463. 'nf
  464. 'na
  465. .if!\\n% \{\
  466. 'da>c
  467. .>b
  468. \!.    br
  469. 'di
  470. .if!(\\n(:D=3) \{\
  471. .nr:G 1
  472. .da>d
  473. .>b
  474. \!.        br
  475. .di
  476. 'br\}
  477. 'br\}
  478. .if!((\\n%=0)*(\\n(:D=3)*(\\n(:t=1):(\\n(;X)) \{\
  479. 'da>y
  480. .>b
  481. \!.    br
  482. 'di
  483. 'br\}
  484. 'rm>b
  485. .)R
  486. 'ev
  487. .nr:F 0
  488. .>R
  489. .if!((\\n%=0)*(\\n(:D=3)*(\\n(:t=1):(\\n(;X)) \{\
  490. .if!((\\n(!A=1):((\\n(;C=2)&(\\n(!F=1))) \{\
  491. 'if!\\n(:s-1 'nr dn +4v+.5p
  492. 'nr:o +\\n(dnu
  493. 'nr:O +\\n(dnu
  494. .nrdn 0
  495. 'if!\\n(.pu-\\n(nlu-.5p-\\n(:ou 'nr :o \\n(.pu-\\n(nlu-.5p
  496. 'if!\\n(:ou-\\n(:mu 'nr :o \\n(:mu
  497. 'ch)f -\\n(:ou 
  498. 'br\}\}
  499. ..
  500. .\"        Screen definition
  501. .deSs
  502. .br
  503. .disC
  504. .br
  505. .fi
  506. .ls1
  507. .in\\n(%ou
  508. .sp1.5
  509. .mkQ
  510. .ps4
  511. \v'0.4i'\
  512. \h'4.7i'\
  513. \D'a -0.5i 0 0 -0.5i'\
  514. \D'l -3.7i 0'\
  515. \D'a 0 0.5i -0.5i 0'
  516. .sp|\\nQu
  517. .di
  518. .br
  519. .diST
  520. .ev2
  521. .br
  522. .in\\n(%ou
  523. .in+0.36i
  524. .sp0.4
  525. .nf
  526. .ps8
  527. .vs10
  528. .csC 18
  529. .ftC
  530. .ls1
  531. ..
  532. .deSb
  533. .sp0.4
  534. .ft
  535. .vs
  536. .ps
  537. .in
  538. .ev
  539. .\".if\\n(.tu<2v .nrsT 1
  540. .di
  541. .ie\\n(dnu<\\n(.tu \{\
  542. .\".tm here
  543. .sC
  544. .nr@c (\\n(nlu-2v)u
  545. .nrs@ 1 \}
  546. .el \{\
  547. .\".tm there
  548. .\".tm \n(}f
  549. .if!\\n(}f .ie(\\n(dnu+1i)>\\n(.tu 'bp
  550. .if\\n(}f .ie(\\n(dnu+1.6i)>\\n(.tu 'bp
  551. .el .sp1
  552. .nr@c \\n(nlu
  553. .nrs@ 1
  554. .sC \}
  555. .nf
  556. .csC 18
  557. .ftC
  558. .ST
  559. .in\\n(%ou
  560. .\".ie\\nA .in+0.21i
  561. .\".el .in+0.2i
  562. .fi
  563. .ls1
  564. .ps4
  565. .ft1
  566. .nrc@ \\n(nlu
  567. .ie\\n(s@>0 \{\
  568. .\".tm hello
  569. .nrf@ 1
  570. \v'-0.27i'\
  571. \D'a 0.5i 0 0 0.5i'\
  572. \D'l 3.7i 0'\
  573. \D'a 0 -0.5i 0.5i 0'\
  574. \D'l 0 -(\\n(c@u-\\n(@cu-3.65v)u'\
  575. \h'-4.7i'\
  576. \D'l 0 (\\n(c@u-\\n(@cu-3.65v)u' \}
  577. .el \{\
  578. .\".tm goodbye
  579. \v'-0.27i'\
  580. \D'a 0.5i 0 0 0.5i'\
  581. \D'l 3.7i 0'\
  582. \D'a 0 -0.5i 0.5i 0'\
  583. \D'l 0 -(\\n(dnu-1.9v)u'\
  584. \h'-4.7i'\
  585. \D'l 0 (\\n(dnu-1.9v)u' \}
  586. .sp2.5
  587. \\.if\\n(}f>0 \{\
  588. .    in0
  589. .    {f
  590. .    rm{f
  591. \\.    tm fig    Figure \\*(&z\\n(Fg:\\0\\*({g    \\*(&z\\n%
  592. \\.    nr}f 0
  593. .    in \}
  594. .ls
  595. .in\\n(%ou
  596. .rmSC
  597. .rmST
  598. .rrc@
  599. .rrf@
  600. .rrs@
  601. .rr@c
  602. .ps 11
  603. .vs 13
  604. .wh -2.9i pF
  605. ..
  606. .de Rt
  607. .br
  608. .nr Xs \\n(Ps
  609. .nr Ps 1
  610. .di rT
  611. .sp .5v
  612. \s+2\f6\\$1\fP\s0
  613. .sp .5v
  614. ..
  615. .de Re
  616. .di
  617. .if \\n(dn>\\n(.t \{.
  618. .ne \\n(dnu\}
  619. .nf
  620. .rT
  621. .fi
  622. .nr Ps \\n(Xs
  623. ..
  624. .
  625. .\" Footers....  modified to have page offset fixed before and after.
  626. .
  627. .de)b
  628. 'ev2
  629. .nf
  630. .?1
  631. .?2
  632. .?3
  633. .?4
  634. .?5
  635. .br
  636. .)R
  637. .af;P \\gP
  638. .afP 1
  639. .nr;P \\nP
  640. .afP \\g(;P
  641. .af;P 1
  642. .po -\\n(xIu
  643. .lt \\n(xWu
  644. .ie!\\n(;P%2 .tl \\*(}f
  645. .el.tl \\*(}p
  646. .ie\\n(;P=1 \{\
  647. .ie\\nN=1 .tl \\*(}t
  648. .el.tl \\*(}b \}
  649. .el.tl \\*(}b
  650. .if\\nC .tl \\*(]C
  651. .po
  652. .lt
  653. .)R
  654. 'ev
  655. .    The "last baseline" traps are set again here, in case they were
  656. .    temporarily changed to squeeze another line on the page.
  657. .
  658. .ch )f -\\n(:Mu
  659. .ch )n -\\n(:Mu
  660. ..
  661. .de AL
  662. .nr!D 0
  663. .ds x 20p
  664. .if!\\n(.$>1 .)L \\*x 0 0 1 "\\$1"
  665. .if\\n(.$>1 .if !\\n(.$-2 .LB \\*x 0 0 1 "\\$1"
  666. .if\\n(.$>2 .if !\w\\$2 .)L \\*x 0 0 1 "\\$1" 0 2
  667. .if\\n(.$>2 .if \w\\$2 .LB \\*x 0 0 1 "\\$1" 0 2
  668. ..
  669. .de BL
  670. .ds x 20p
  671. .if\\n(.$<1 .)L \\*x 0 0 0 \\*(BU
  672. .if\\n(.$=1 .LB \\*x 0 0 0 \\*(BU
  673. .if\\n(.$>1 \{.ie !\w\\$1 .)L \\*x 0 0 0 \\*(BU 0 2
  674. .el.LB \\*x 0 0 0 \\*(BU 0 2 \}
  675. ..
  676. .de DL
  677. .ds x 20p
  678. .if\\n(.$<1 .)L \\*x 0 0 0 \\-
  679. .if\\n(.$=1 .LB \\*x 0 0 0 \\-
  680. .if\\n(.$>1 \{.ie !\w\\$1 .)L \\*x 0 0 0 \\- 0 2
  681. .el.LB \\*x 0 0 0 \\- 0 2 \}
  682. ..
  683. .de ML                    \" needs work?
  684. .if\\n(.$<1 .)D "ML:missing arg"
  685. .nr;0 \w\\$1u/3u/\\n(.su+1u
  686. .ie\\n(.$<2 .LB \\n(;0 0 1 0 "\\$1"
  687. .el.if \\n(.$<3 .LB 0\\$2 0 1 0 "\\$1"
  688. .if\\n(.$>2 \{.ie !\w\\$2 .LB \\n(;0 0 1 0 "\\$1" 0 2
  689. .el.LB 0\\$2 0 1 0 "\\$1" 0 2 \}
  690. ..
  691. .de RL                    \" needs work?
  692. .if\\n(.$<1 .LB 6 0 2 4
  693. .if\\n(.$=1 .LB 0\\$1 0 2 4
  694. .if\\n(.$>1 \{.ie !\w\\$1 .LB 6 0 2 4 1 0 2
  695. .el.LB 0\\$1 0 2 4 1 0 2 \}
  696. ..
  697. .de VL
  698. .if\\n(.$<1 .)D "VL:missing arg"
  699. .ie\\n(.$<3 .LB 0\\$1 0\\$2 0 0
  700. .el.LB 0\\$1 0\\$2 0 0 \& 0 2
  701. ..
  702. .
  703. .de )L
  704. .if\\n(:g>5 .)D "LB:too many nested lists"
  705. .if\\n(:g .)A 
  706. .if!\\n+(:g-1 .ds ]b \\n(.i
  707. .nr:b \\n(.iu+0\\$1u 
  708. .nr:c \\n(.iu+0\\$2u 
  709. .nr:d 0\\$3 
  710. .nr:e 0\\$4 
  711. .nr:f 0\\$6 
  712. .if!\w\\$6 .nr :f 1
  713. .ds]g \\$5
  714. .if!\w\\$5 \{.ds ]g \&
  715. .if\\n(:e .ds ]g 1
  716. 'br\}
  717. .nr:a 0 1
  718. .if0\\$4 .af :a \\$5 1
  719. .SP 1
  720. .fi
  721. .in\\n(:bu
  722. .ti\\n(:bu
  723. ..
  724. .de LE
  725. .if(\\n(:I>1)&(\\n(nl-\\n(:J) .nr :I 0
  726. .if\\n(:I<2 .nr :I 0
  727. .ie\\n(:g<1 .)D "LE:mismatched"
  728. .el.)B
  729. .sp 1
  730. .ns
  731. .nr:J \\n(nl
  732. ..
  733. .de LF  \"list fix macro, use following .LE that preceeds an .H(1-5) head
  734. .\"if argument is 1 space an additional 24 pts,
  735. .\"else space additional 12pts
  736. .rs
  737. .ie\\n(.$=1 .sp 24p
  738. .el .sp 12p
  739. .ns
  740. ..
  741. .de LI 
  742. .if!\\n(:g .)D "LI:no lists active" 
  743. .if(\\n(:g<=\\n(Ls)&(\\n(:f>0) .SP 1
  744. .in\\n(:bu
  745. .if(\\n(:f)&(\\n(:D<1) .ne1v+.5p
  746. .ds}0 \\*(]g
  747. .if\\n(:e .ds }0 \\n+(:a.
  748. .if\\n(:e-1 .ds }0 \\n(:a)
  749. .if\\n(:e-2 .ds }0 (\\n(:a)
  750. .if\\n(:e-3 .ds }0 [\\n(:a]
  751. .if\\n(:e-4 .ds }0 <\\n(:a>
  752. .if\\n(:e-5 .ds }0 {\\n(:a}
  753. .if\\n(.$-1 .ds }0 \\$1\ \\*(}0
  754. .if\\n(.$=1 .ds }0 \\$1
  755. .nr;0 \w\\*(}0
  756. .nr;1 \\n(:c
  757. .if\\n(:d .nr ;1 \\n(:bu-\\n(:du-\\n(;0u
  758. .if!\\n(;1 .nr ;1 0
  759. .nr;0 \\n(:bu-\\n(;1u-\\n(;0u
  760. .ti\\n(;1u
  761. .if!\\n(;0 .nr ;0 \w u
  762. .if\w\\*(}0 \&\\*(}0\h\\n(;0u\&\c
  763. ..
  764. .rn LI lI    \" rename the real LI macro to lI -- we'll need it later.
  765. .
  766. .de LI
  767. .\" First, call the real LI
  768. .lI "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6" "\\$7" "\\$8" "\\$9"
  769. .\" Then, if the tag is very long, break
  770. .if (\\n(:c+\\w\\*(}0)>\\n(:b .br
  771. ..
  772. .
  773. . \" The GM macro works by reducing the position of the two "last permitted
  774. . \" baseline" traps by some number of vertical spaces.  The traps are
  775. . \" restored when the page boundary is crossed.  It is not wise to ask for
  776. . \" too many lines; no telling where they will end up.
  777. . \" 
  778. . \" The traps will be restored to their proper positions by the )b macro,
  779. . \" which gets called at the bottom of every page to print the footers.
  780. .
  781. .de GM
  782. .                \" Starting with the "real" trap position :M,
  783. .nr x \\n(:M-0\\$1v        \" subtract the argument, if there is one.
  784. .if \\nx=\\n(:M .nr x -1v    \" if nothing happened, use 1v.
  785. .
  786. .ch )f -\\nxu            \" change the )f trap
  787. .ch )n -\\nxu            \" change the )n trap
  788. ..
  789. .
  790. .rm xL
  791. .de xT
  792. .
  793. .\" Print one line of a ToC, LoT, Lof.
  794. .
  795. .ie \\$1<0 .\{        \" table or Figure
  796. .
  797. .    if !'\\$2'\\*(xL' \{.    \" this "type" doesn't match previous.
  798. .        rs        \" throw a page.
  799. .        bp
  800. .        af P 1        \" make page number arabic again,
  801. .        nr x \\nP    \" and get its value,
  802. .        af P i        \" then make it roman again,
  803. .        if (\\nx%2)==0 \{.    \" and then if it's even,
  804. .            rs        \" throw another page.
  805. .            bp        \" Phew.
  806. .        \}
  807. .        %T "\\$2s"
  808. .        ds xL \\$2
  809. .    \}
  810. .
  811. .    nr x1 0
  812. .    nr x2 62p
  813. .\}
  814. .el \{.                \" make ToC:
  815. .
  816. .    )I \\$1 \\*(TT        \" set }3 to the "table tab" for this level
  817. .    nr x1 \\*(}3
  818. .
  819. .    )I \\$1+1 \\*(TT    \" set }3 to table tab for next level
  820. .    nr x2 \\*(}3
  821. .\}
  822. .
  823. .\" Define the chapter-page number string
  824. .ft 1
  825. .ds x \\$6-\\$5
  826. .
  827. .in \\n(x2u        \" indent to text position
  828. .ti \\n(x1u        \" temp indent back to number's position
  829. .ll \nWu-\\w'\\*x'u-3n    \" shorten line by width of page number and 3n's
  830. .di >A            \" send into a diversion, so that filling happens
  831. .            \" in the shorter line length.  The "\\a" leader
  832. .            \" character gets expanded to dots, at the full
  833. .            \" line length, when the diversion finally gets
  834. .            \" output.
  835. .
  836. .    \" This line is made of the following parts:
  837. .    \"    $3 is the heading number.
  838. .    \"    horizontal = distance between number (at x1) and text (at x2)
  839. .    \"     $4 is the text.
  840. .    \"    \\a is the "leader" character that becomes dots.
  841. .    \"    *x is the chapter-page number.
  842. .
  843. .fi
  844. .na
  845. .ie \\$1<0 \{.            \" table of figure:
  846. .    fp 4 PI
  847. \\f6\\$2 \\$3\\f1\\h'|\\n(x2u'\\$4\\f1\\a\\*x
  848. .\}
  849. .el \{.                \" everything else:
  850. .    ie \\$1=1 \{.        \" chapters:
  851. .        ft 6        \" HB, Helvetica Bold
  852. .        fp 4 HD        \" "italic" font (4) is Helvetica Bold Oblique
  853. .        sp 32p-1v    \" Level 1's get extra space
  854. .    \}
  855. .    el \{.            \" non-chapters:
  856. .        ft 1        \" PA, Palatino
  857. .        fp 4 PI        \" the "italic" font (4) is Palatino Italic
  858. .    \}
  859. \\$3\\h'|\\n(x2u-\\n(x1u'\\$4\\f1\\a\\*x
  860. .\}
  861. .br
  862. .di
  863. .
  864. .ll \\nWu        \" Full line width.
  865. .ta \\nWuR        \" number is right-adjusted at the right margin.
  866. .in 0            \" indenting is already done; put it back now.
  867. .nf            \" filling is already done; don't do it again.
  868. .na
  869. .ne \\n(dnu+1v        \" This might be somewhere about right...
  870. .>A            \" dump out the text
  871. .)R            \" reset all the fonts and sizes and stuff.
  872. ..
  873. .de %T
  874. .    TP
  875. .    ft 6
  876. .    ps 14
  877. .    rs
  878. .    sp |232p
  879. \\$1
  880. .    sp 100p
  881. .    ns
  882. .    ft 1
  883. .    ps 10
  884. ..
  885. .
  886. .
  887. .de Xh        \" Index heading -- new letter
  888. .sp 40p
  889. .ft 6
  890. .ne 1v+22p+2v
  891. .ps 10
  892. .vs 12
  893. .in 0
  894. \\$1
  895. .sp 22p
  896. .ft 1
  897. .ps 10
  898. .vs 12
  899. ..
  900. .
  901. .
  902. .de Xa        \" type "a" entry -- normal
  903. .in 9p
  904. .ti 0
  905. \\$1
  906. ..
  907. .
  908. .
  909. .de Xb        \" type "b" entry -- indented
  910. .in 18p
  911. .ti 27p
  912. \\$1
  913. ..
  914. .
  915. .if \n(xM=2 \{.            \" -rx2, print the ToC, LoT, LoF
  916. .
  917. .    S 10 14
  918. .
  919. .    OF "#\\\\s9\\\\*(VE\\\\s0##\\\\f6\\\\nP\\\\fP#"
  920. .    EF "#\\\\f6\\\\nP\\\\fP\&\\\\s9##\\\\s0#"
  921. .
  922. .    af P i
  923. .    nr P 2    \" to begin Contents on page iii
  924. .
  925. .    %T Contents 
  926. .
  927. .\}
  928. .
  929. .if \n(xM=3 \{.            \" -rx3, print the index
  930. .
  931. . \" initialize and start the first page
  932. .
  933. .    OF "#\\\\s9\\\\f1\\\\*(TI##\\\\f6Index-\\\\nP#"
  934. .    EF "#\\\\s9\\\\f6Index-\\\\nP##\\\\f1\\\\*(SE#"
  935. .
  936. .    nr P 0
  937. .
  938. .    TP
  939. .
  940. .    2C
  941. .    fi
  942. .    na
  943. .    
  944. .    ps 10
  945. .    vs 12
  946. .    in 0
  947. .    ft 6
  948. Index
  949. .    sp 50p
  950. .    ns
  951. .\}
  952. .de )F
  953. .    ne 6
  954. .    in 0
  955. \\$1 \\$5\\$3.
  956. .    sp -1v
  957. .    in \\w'\\$1 \\$5\\$3.\ \ 'u
  958. .    fi
  959. .    na
  960. \\$4
  961. .    br
  962. .    in
  963. ..
  964. .EQ
  965. delim $$
  966. .EN
  967.